Краткое описание: инструкция по настройке VPN туннеля типа WireGuard между двумя роутерами MikroTik, Ubuntu и MikroTik, Windows и MikroTik. Описание параметров WireGuard.

WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения.

Что такое WireGuard

Для настройки Wireguard на роутере MikroTik потребуется RoutesOS v7 и выше.

Для WireGuard популярные две схемы настроек:

  • Соединение типа peer-to-peer. Когда инициатором(initial) может выступать любая из сторон участников WireGuard туннеля. Главное требование к такому типу подключения – наличие двух белых(статических) IP адресов со стороны роутеров MikroTik;
  • WireGuard-клиент подключается к WireGuard-серверу. Соответственно WireGuard-клиент считается инициатором подключения, WireGuard-сервер отвечающей(responder или passive) или слушающей стороной. Требование по наличию белого(статического) IP при этом снижается до WireGuard-сервера.

На момент написания инструкции используется RouterOS v 7.3.1

Настройка WireGuard MikroTik, серверная часть

В качестве WireGuard-клиента и WireGuard-сервер будет выступать роутеры MikroTik.

Создание интерфейса WireGuard сервера

Настройка находится WireGuard→WireGuard

Создание интерфейса WireGuard сервера

Создание интерфейса WireGuard сервера, генерацию ключей

  • Listen Port – порт, на котором будет работать WireGuard;
  • Private key – ключ который не будет задействован в настройках;
  • Public key – данный ключ будет нужно указать в настройках WireGuard-клиента.

Значение Private key заполнять не нужно, оно будет создано автоматически при создании WireGuard интерфейса.

Нужна настройка MikroTik WireGuard?

Настройка VPN WireGuard на оборудовании MikroTik:

  • Объединение распределенных локаций в общую сеть;
  • Подключение к VPS WireGuard серверу;
  • Настройка маршрутизации между WireGuard подключениями.

    Назначить IP адрес для WireGuard сервера

    IP адрес для WireGuard-сервера является технической настройкой и будет использоваться при настройке статической маршрутизации для обмена трафика между сетями WireGuard-сервера и WireGuard-клиента.

    Настройка находится IP→Address

    Назначить IP адрес для WireGuard сервера

    Настройка параметров клиента в WireGuard сервере

    WireGuard Peer содержит настройки для клиента VPN туннеля. Тут описываются ключи доступа, а также разрешающие правила доступов, для обмена трафика между подсетями.

    Настройка находится WireGuard→Peers

    Настройка параметров клиента в WireGuard сервере

    где

    • Public Key – клиентский Public Key, который сгенерировался при создании интерфейса;
    • Allowed Address – список разрешенных IP адресов(внутренних). Тут указан IP адрес интерфейса WireGuard-клиента и подсеть за ним;
    • Persistent Keepalive – при падении VPN туннеля, это время будет отводиться на его восстановление и будет считаться, что статус VPN все ещё UP;
    • Endpont и Endpont Port нужно оставить пустыми, это позволит не обращать внимание на аналогичные параметры со стороны клиента. WireGuard-сервер данными параметрами переводится в статус отвечающий(responder или passive) или слушающий стороны.

    Настройка маршрутизации для WireGuard сервера

    Настройка находится IP→Routes

    Настройка маршрутизации для WireGuard сервера

    • Dst. AddressIP адрес или целая подсеть, к которой необходимо получить доступ за WireGuard-клиентом;
    • Gateway – внутренний IP адрес WireGuard-клиента.
    /interface wireguard
    add listen-port=13231 mtu=1420 name=wireguard-MikroTik-Config.ukr-Server
    /interface wireguard peers
    add allowed-address=174.16.0.2/32,192.168.5.0/24 interface=\
    wireguard-MikroTik-Config.ukr-Server persistent-keepalive=10s public-key=\
    "SO4l7YTMMqssgHcWbcIjtuGHO+dz2wENnpoK6hXWEyE="
    /ip address
    add address=174.16.0.1/24 interface=wireguard-MikroTik-Config.ukr-Server \
    network=174.16.0.0
    /ip route
    add disabled=no distance=1 dst-address=192.168.5.0/24 gateway=174.16.0.2 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \
    target-scope=10

    Настройка WireGuard клиента на роутере MikroTik

    В качестве клиента WireGuard выступает роутер MikroTik с динамическим(серым) IP адресом. Первым делом нужно создать WireGuard интерфейс со стороны клиента.

    Создание интерфейса WireGuard клиента

    Настройка находится WireGuard→WireGuard

    Создание интерфейса WireGuard клиента

    Создание интерфейса WireGuard клиента, генерация ключей

    • Public Key – этот ключ указывается в параметре Public Key для WireGuard Peer со стороны WireGuard-сервера(его просто нужно скопировать).

    Назначить IP адрес для WireGuard клиента

    По аналогии с WireGuard-сервером, нужно создать технический IP адрес для WireGuard-клиента.

    Настройка находится IP→Address

    Назначить IP адрес для WireGuard клиента

    Настройка параметров сервера в WireGuard клиенте

    Настройка находится WireGuard→Peers

    Настройка параметров сервера в WireGuard клиенте

    где

    • Public Key – серверный Public Key, который сгенерировался при создании WireGuard интерфейса;
    • Endpoint – адрес WireGuard сервера;
    • Endpoint Port – внешний порт WireGuard сервера(13231).

    Настройка маршрутизации для WireGuard клиента

    Настройка находится IP→Routes

    Настройка маршрутизации для WireGuard клиента

    • Dst. AddressIP адрес или целая подсеть, к которой необходимо получить доступ за WireGuard-сервером;
    • Gateway – внутренний IP адрес WireGuard-сервера.
    /interface wireguard
    add listen-port=13231 mtu=1420 name=wireguard-MikroTik-Config.ukr-Client
    /interface wireguard peers
    add allowed-address=174.16.0.1/32,192.168.1.0/24 endpoint-address=\
    11.11.11.10 endpoint-port=13231 interface=\
    wireguard-MikroTik-Config.ukr-Client persistent-keepalive=10s public-key=\
    "UOOBJ9j5BjUPmP6qccSFT8hLBl+tYL3FoDdPXPa5Imw="
    /ip address
    add address=174.16.0.2/24 interface=wireguard-MikroTik-Config.ukr-Client \
    network=174.16.0.0
    /ip route
    add disabled=no distance=1 dst-address=192.168.1.0/24 gateway=174.16.0.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \
    target-scope=10

    При успешном установлении связи между WireGuard-клиентом и WireGuard-сервером, параметры WireGuard Peer такие как: Rx, Tx и Last Handshake начнут заполняться значениями.

    Успешная настройка WireGuard VPN в MikroTik

    Настройка Firewall для WireGuard

    Если по какой-то причине со стороны WireGuard-сервера не устанавливается соединение, нужно обратить внимание на наличие разрешающего правила со стороны Firewall.

    Настройка Firewall для WireGuard

    /ip firewall filter
    add action=accept chain=input dst-port=13231 in-interface-list=WAN protocol=\
    udp

    Настройка WireGuard клиента для Ubuntu или CentOS сервера

    Многие хостинг провайдеры при аренде VPS сервера на ОС типа Linux (Debian, Ubuntu, Centos) предлагают предустановку WireGuard-сервера. В одном из частных случаев было предоставлено сразу 5 готовых учётных записей для подключения WireGuard-клиентов. Конфигурация для WireGuard-клиента имеет вид:

    [Interface]
    Address = 10.180.5.5/32
    PrivateKey = xNSEL2aoULaYctgSUGQArQYAUgaMXVYhI9IbMrst6Es=
    DNS = 10.180.5.1
    
    [Peer]
    PublicKey = IhhMrJLeQOfnbaBFC34WEyP8qE1L2cbzjYgMFHuao3k=
    AllowedIPs = 0.0.0.0/0
    Endpoint = 5.61.49.243:51820

    И для настройки WireGuard-клиента это нужно применить со стороны роутера MikroTik.

    Если ваш хостинг провайдер VPS не предоставляет услугу предустановки WireGuard-сервера, можно воспользоваться проверенной инструкцией по его установке и настройке  

    Создание интерфейса WireGuard клиента

    Настройка находится WireGuard→WireGuard

    Настройка WireGuard интерфейса, для подключение к Ubuntu

    • Private Key – этот ключ нужно скопироваться с параметра PrivateKey, который указан со стороны хостинг провайдера WireGuard-сервера.

    Настройка параметров peer в WireGuard клиенте

    Настройка находится WireGuard→Peers

    Настройка WireGuard peer, для подключение к Ubuntu

    • Public Key -этот ключ нужно скопироваться с параметра PublicKey, который указан со стороны хостинг провайдера WireGuard-сервера;
    • Endpont – внешний IP адресWireGuard-сервера, параметр Endpoint;
    • Endpont Port – порт для подключения, указан в параметре Endpoint после IP адреса(5.61.49.243:51820);
    • Allowed Address – тут следует указать 0.0.0.0/0, без дополнительных ограничений по видимости внутренних сетей для WireGuard-клиента;
    • Persistent Keepalive – при падении VPN туннеля, это время будет отводиться на его восстановление и будет считаться, что статус VPN все ещё UP.

    Добавить WireGuard интерфейс в список WAN

    Настройка находится Interfaces→Interface List

    Добавить WireGuard интерфейс в список WAN

    Настроить Masquerade для WireGuard

    В данном варианте следуем просто проконтролировать, что присутствует правило для Out interface list ранее обновленного списка WAN типа Masquerade. Если его нет, то нужно создать новое и в качестве Out interface указать ранее созданный WireGuard интерфейс.

    Настройка находится IP→Firewall→NAT

    Настроить masquerade для WireGuard клиента

    Создать таблицу маршрутизации для WireGuard

    Настройка находится Routing→Tables

    Создать таблицу маршрутизации для WireGuard

    Назначить IP адрес WireGuard клиенту

    Настройка находится IP→Addresses

    Настройка WireGuard, назначить IP адрес для клиента

    где Address=10.180.5.5/24 это значение Address с конфигурации, сформированной на Wireguard сервере.

    Промаркировать таблицу для выхода в интернет

    С помощью маркировки(Mangle) можно промаркировать таблицу маршрутизации, в которую попадёт весь трафик, кроме трафика предназначенного локальной сети. По сути это и будет интернет трафик.

    Настройка находится IP→Firewall→Mangle

    Настройка Mangle для WireGuard

    Настройка Mangle для WireGuard трафика

    Добавить статический маршрут для интернета через WireGuard

    Промаркированная ранее таблица маршрутизации будет направляться в WireGuard туннель, что позволит выходить в интернет через WireGuard-сервер, который установлен на VPS Ubuntu(Debian) или CentOS.

    Настройка находится IP→Routes

    Настройка WireGuard, добавить статический маршрут к Ubuntu

    где Gateway=10.180.5.1 это предполагаемый IP адрес WireGuard сервера, это значение отсутствует в клиентской конфигурации.

    /interface wireguard
    add listen-port=51820 mtu=1420 name=Wireguard-Client
    
    /interface wireguard peers
    add allowed-address=0.0.0.0/0 endpoint-address=5.61.49.243 endpoint-port=\
    51820 interface=Wireguard-Client persistent-keepalive=10s public-key=\
    "IhhMrJLeQOfnbaBFC34WEyP8qE1L2cbzjYgMFHuao3k="
    
    /ip address add interface=Wireguard-Client address=10.180.5.5 netmask=255.255.255.0
    /interface list member
    add comment=defconf interface=Wireguard-Client list=WAN
    
    /routing table
    add disabled=no fib name=To-WireGuard
    
    /ip firewall mangle
    add action=mark-routing chain=prerouting dst-address=!192.168.88.0/24 \
    new-routing-mark=To-WireGuard src-address=192.168.88.0/24
    
    /ip route
    add disabled=no dst-address=0.0.0.0/0 gateway=10.180.5.1 routing-table=\
    To-WireGuard suppress-hw-offload=no

    Настройка WireGuard Windows клиента

    Роутер MikroTik может выступать WireGuard-сервером для Windows, Android или IOS WireGuard-клиентов. Настройка будет содержать несколько ручных задач и в этом основной недостаток WireGuard в MikroTik – работает он быстро, но требует знаний.

    Создать WireGuard интерфейс

    Настройка находится WireGuard→WireGuard

    Настройка WireGuard интерфейса, для Windows подключения

    Назначить IP адрес для WireGuard интерфейса

    Настройка находится IP→Addresses

    Настройка IP адреса для WireGuard интерфейса

    Скачать Windows WireGuard клиент

    WireGuard-for-PC-Windows

    На официальном сайте WireGuard нужно выбрать соответствующий инсталлятор VPN клиента и в режиме “Далее” запустить и установить его.

    Создать новый WireGuard клиент

    Добавить новый VPN WireGuard в Windows

    Предварительная настройка WireGuard в Windows

    При создании такие параметры как PublicKey(Публичный ключ) и PrivateKey будут сгенерированы автоматически, при этом:

    • PublicKey – нужно скопировать и указать в параметре Public Key для WireGuard Peer со стороны MikroTik;
    • PrivateKey – оставить без изменений, это ключ будет указан только со стороны WireGuard-клиента.

    Создать WireGuard Peer

    Настройка находится WireGuard→WireGuard→Peers

    Настройка WireGuard Peer, для Windows подключения

    • Public Key – тут нужно вставить PublicKey(Публичный ключ), который был сгенерирован со стороны Windows клиента;
    • Allowed Address – тут следует указать 0.0.0.0/0, без ограничений для WireGuard-клиента, а также для выхода в интернет;
    • Persistent Keepalive – время обновление статуса VPN туннеля.
    /interface wireguard
    add listen-port=13231 mtu=1420 name=Wireguard-MikroTik-Config.ukr-Server
    
    /interface wireguard peers
    add allowed-address=0.0.0.0/0 interface=Wireguard-MikroTik-Config.ukr-Server \
    persistent-keepalive=10s public-key=\
    "yiUzZPlwnduiB4saKzy5aNDQr6/eACMK9fKblYyxmlM="
    
    /ip address
    add address=10.180.5.1/24 interface=Wireguard-MikroTik-Config.ukr-Server \
    network=10.180.5.0

    Обновить конфигурацию для WireGuard клиента

    Ниже будет представлен фрагмент конфигурации, которую нужно “собрать” со стороны WireGuard клиента.

    [Interface]
    Address = 10.180.5.2/32
    PrivateKey = OOVyS9ivVHy0fOtepXJeQBPdw6Glt1gYyR39Ll2sxFM=
    DNS = 10.180.5.1
    
    [Peer]
    PublicKey = G0HVPyUjgMtg5HAQ2YZ5wBY04ZXnEqBUywsnisfcZgc=
    AllowedIPs = 0.0.0.0/0
    Endpoint = 46.XX.YY.MMM:13231
    • AddressIP адрес для WireGuard клиента. Значение нужно выбрать из сети 10.180.5.0/24;
    • PrivateKey – ключ, который был сгенерирован при создании WireGuard клиента;
    • DNSIP адрес MikroTik WireGuard интерфейса, может использоваться как DNS сервер;
    • PublicKey – этот ключ нужно скопировать с Public Key MikroTik WireGuard интерфейса;
    • AllowedIPs – разрешение WireGuard клиенту выход в интернет через VPN;
    • EndpointIP адрес и порт WireGuard сервера.

    Скопировать конфигурацию в WireGuard клиент

    Скопировать настройки WireGuard в Windows клиент

    Подключиться к WireGuard серверу

    Подключить к WireGuard серверу в Windows

    Проверить работу интернета через WireGuard

    Проверка работы WireGuard сервера в Windows

    Проверка работы интернета через WireGuard сервер в Windows

    Есть вопросы или предложения по настройке WireGuard в MikroTik? Активно предлагай свой вариант настройки! Оставить комментарий